home *** CD-ROM | disk | FTP | other *** search
- Program ChangeIO;
-
- { ======================================================================
-
- ChangeIO.p , (C)16|06|1992 by "Diesel" Bernd Künnen
-
- Zur Benutzung im CLI bzw. in Scripts. Zweck des Ganzen ist es,
- das 640*200-CON-Fenster, das durch das Runtime-System des PCQ-
- Compilers bei einem WB-Start geöffnet wird, auf eine angenehmere
- Größe zu bringen. Und das geht so :
-
- ChangeIO Myproggy con:10/0/400/50/
-
- Der neue IO-Kanal darf dabei max. 16 Buchstaben haben. Angewendet
- werden kann das Ganze sowohl auf Objectcodes als auch auf fertige
- Programme.
-
- Allens chlor ?
-
- Diesel
-
- ======================================================================}
-
-
- {$I "include:libraries/dos.i"}
- {$I "include:utils/stringlib.i"}
- {$I "include:utils/parameters.i"}
-
- Const
- PCQ_IO : String = "CON:0/0/640/200/";
-
- Max = 1024;
-
- Type
- Memo = Array[0..Max-1] Of Byte;
- MemoPtr = ^memo;
-
- VAR
- i : Short;
- x,
- pcq,
- old,
- anz,
- anz2 : Integer;
- myMem : MemoPtr;
- buf : Address;
- pFile,
- newIO : String;
- MyHandle : FileHandle;
-
-
-
- Procedure CleanExit(why: String; rt : Integer);
- Begin
- IF Myhandle<>NIL then DosClose(MyHandle);
-
- If why<>NIL then begin
- writeln(why);
- writeln("\nUsage : ChangeIO Filename IOstring(max. 16 chars)\nE.g. changeIO NewProg raw:0/0/99/40/Hi\n");
- Delay(100);
- End;
-
- Exit(rt);
-
- End;
-
-
-
- BEGIN
- { -- ersma` Begrüßung, logo -- }
- writeln("ChangeIO 1.0, (C)1992 by Diesel.\n");
-
- { --jetzt die Arbeitsbuffers holen -- }
- pFile := AllocString(100);
- newIO := AllocString(40);
- New(myMem);
-
- pcq:=strlen(PCQ_IO);
-
- { -- das 1. Arg. holen -- }
- GetParam(1,pFile);
- IF StrLen(pFile)=0 THEN Cleanexit("No parameters",5);
-
- { -- das 2. Arg holen -- }
- GetParam(2,newIO);
- IF StrLen(newIO)=0 THEN Cleanexit("No IO-String",5);
- IF strlen(newIO) > pcq then CleanExit("New IO-String 2 long!",5);
-
- { -- Jetzt das File öffnen -- }
- MyHandle:=DOSOpen(pFile,Mode_OldFile);
- IF MyHandle=NIL THEN CleanExit("Could not open file",10);
-
- { -- Suche den alten PCQ-IO-String -- }
- Repeat
- anz:=DOSRead(MyHandle,myMem,Max);
-
- IF anz>pcq Then
- Begin
- i:=-1;
- Repeat
- i:=i+1;
- buf:=Adr(myMem^[i]);
- x:=strcmp(PCQ_IO,buf);
- until (x=0) or (i=anz-pcq);
- End;
-
- Until (anz<Max) OR (x=0);
-
- If x<>0 then cleanexit("Could not find old IO-String",5);
-
- { -- Ersetze den alten durch den neuen IO-String -- }
- strcpy(buf,newIO);
-
- { -- geänderten Inhalt in die Datei schreiben -- }
- old:=Seek(MyHandle,-1*anz,Offset_Current);
- anz2:=DosWrite(MyHandle,myMem,anz);
- If anz2<>anz then CleanExit("Error on changing file",10);
-
- { -- Bye bye GTI -- }
- Cleanexit(NIL,0);
-
- END.
-